var fs = require('fs');
console.log("↓")
/*
var isExist = fs.existsSync('test');
console.log(isExist)
var dirArr = [];
fs.readdir('test',function(err,data){
    if(err){
        console.log(err)
        return ;
    }
    (function getDir(i){
        if(i == data.length){
            console.log(dirArr)
            return ;
        }
        fs.stat('test' + '/' + data[i], function(err,stats){
            if(stats.isDirectory()){
                dirArr.push(data[i]);
            }
            getDir(i+1);
        })
    })(0)
})
*/
/* es6常见语法
        let     块作用域  
            if(1){ let a = 123 } console.log(a)
        模板字符串：
            var name = 'tom'
            var age = 20
            console.log(`${name}'s age is  ${age} years old.`)
        ****  ` `: 为Tab键上的字符 可以在内部写单/双引号 
        属性简写：
            var name = 'jane'
            var age = 23
            var app = { name, age }   非简写： var app = { name:name, age:age}
            console.log(`${app.name}'s age is ${app.age} years old.`)
        方法的简写：
            var app = { run: function(){ console.log("I'm runing.") }}; app.run()
            简写后：
            var app = { run(){ console.log("I'm runing.") }}; app.run()
        箭头函数：
            函数中的对象 this 指向上下文
            setTimeout( function(){ console.log(111) }, 1000);
            使用后：
            setTimeout(() =>{ console.log(111) }, 1000);
        利用回调函数从外部获取异步方法里面的数据
            function getData(callback){
                setTimeout(function(){
                    var name = 'san'
                    callback(name)
                },1000)
            }
            getData(function(name){
                console.log(name)
            })


*/
//  Promise 获取异步数据
/*
var p = new Promise(function(resolve,reject){
    setTimeout(function(){
        var name = 'san'
        resolve(name)
    },1000)
})
p.then(function(data){
    console.log(data)
})
*/
// async await
async function test(){
    return 'hello node.js'
}
async function main(){
    var data = await test()   //获取异步方法里的数据
    console.log(data)
}
console.log(main())

async function test2(){
    return new Promise(function(resolve,reject){
        setTimeout(function(){
            var name = 'san'
            resolve(name)
        },1000)
    })
}
async function getest2(){
    var data = await test2()
    console.log(data)
}
getest2()

async function isDir(path){
    return new Promise((resolve,reject)=>{
        fs.stat(path,async(err,stats)=>{
            if(err){
                // console.log(err)
                reject(err)
                return ;
            }
            if(stats.isDirectory()){
                reject(true)
                // return true
            } else{
                reject(false)
                // return false
            }
        })
    })
}

function getDir(){
    var path = 'test';
    var dirArr = [];
    fs.readdir(path, async function(err,data){
        if(err){
            console.log(err)
            return;
        }
        for(var i=0;i<data.length;i++){
            if(await isDir(path + '/' + data[i])){
                dirArr.push(data[i])
            }
        }
        console.log(dirArr)
    })
}
// if(await isDir('text/js')){
    getDir();
// }



console.log("↑")